package com.foreknow.demo15;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class JDBCDemo {
    public static void main(String[] args) {
        try {
            //1.加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.获取链接
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/wjy?useUnicode=true&characterEncoding=utf8&useSSL=true","root","roat");
            //3.获取到Statement/PrepareStatement--->Statement  createStatement()  创建一个Statement对象来将Sql语句发送到数据库
            //Statement语句用于静态Sql语句并返回他所生成的结果
            // 常用方法： 1. ResultSet    executeQuery(String sql) 执行给定的sql语句 该语句返回单个ResultSet对象(用于保存查询到的结果)
            //           2. int   executeUpdate(String sql) 执行给定的sql语句 该语句可能为insert update delete 或者不返回任何内容的sql语句
            Statement stmt = conn.createStatement();
            //4.用于执行 SQL语句
            int isRight1 = stmt.executeUpdate("insert into employee(username,password) values('fender','123456')");
            int isRight2 = stmt.executeUpdate("insert into employee(username,password) values('tom','654321')");
            //int isRight = stmt.executeUpdate("delete from employee where id = 1");
            System.out.println(isRight1);
            System.out.println(isRight2);
            //接口 ResultSet表示数据库结果集的数据表，通常通过执行查询数据库的语句生成。
            //ResultSet 对象具有指向其当前数据行的光标。最初，光标被置于第一行之前。 next 方法将光标移动到下一行。
            //因为该方法在ResultSet对象没有下一行时返回 false，所以可以在while循环中使用他来迭代结果集。
            ResultSet rs = stmt.executeQuery("select * from employee");//会将查询的结果保存到ResultSet集合里
            List<Employee> list = new ArrayList<>();
            while (rs.next()) {
                //获取当前行的第几列数据
                int id = rs.getInt("id");
                String username = rs.getString("username");
                String password = rs.getString("password");
                //将结果集中的数据保存到对象中
                Employee emp = new Employee();
                emp.setId(id);
                emp.setUsername(username);
                emp.setPassword(password);
                //将对象保存到集合中
                list.add(emp);
            }
            for (Employee e:list) {
                System.out.println(e.getUsername());
            }
            //5.释放资源
            rs.close();
            stmt.close();
            conn.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}












